<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
</html>
<script>
    //类的由来
    //JavaScript语言中，生成实例对象的传统方法是通过构造函数

    // function Person(name,age){
    //     this.name = name
    //     this.age = age
    // }
    // Person.prototype.getName = function(){
    //     console.log(this.name)
    // }

    // var person = new Person('小明',18)
    // person.getName()

    //ES6提供了更接近传统语言的写法，引入Class(类)这个概念，作为对象的模板。通过class关键字，可以定义类
    //基本上，ES6的class可以看作只是一个语法糖，它的绝大部分功能，ES5都可以做到，新的class写法只是让对
    // 原型的写法更加清晰，更像面向对象编程的语法而已
    class Person{
        constructor(name,age){
            this.name = name
            this.age = age
        }

        getName(){
            console.log(this.name)
        }
    }

    var person = new Person('小明',18)
    person.getName()
    //constructor方法是类的默认方法，通过new命令生成对象实例时，自动调用该方法,一个类必须有constructor方法，
    // 如果没有显示定义，一个空的constructor方法会被默认添加


    // 类的实例
    //生成类的实例的写法，与ES5完全一样，也是使用new命令


    //注意点：类不存在变量提升，这一点与ES5完全不同
</script>